// utils/textWidth.ts
// 手动实现文本宽度计算，避免 anafanafo 的兼容性问题

// 12px Verdana 字体的字符宽度映射
const CHAR_WIDTHS: { [key: string]: number } = {
    // 数字
    '0': 7, '1': 6, '2': 7, '3': 7, '4': 7, '5': 7, '6': 7, '7': 7, '8': 7, '9': 7,
    // 大写字母
    'A': 8, 'B': 7, 'C': 8, 'D': 8, 'E': 7, 'F': 6, 'G': 8, 'H': 8, 'I': 4, 'J': 5,
    'K': 7, 'L': 6, 'M': 10, 'N': 8, 'O': 8, 'P': 7, 'Q': 8, 'R': 8, 'S': 7, 'T': 7,
    'U': 8, 'V': 8, 'W': 11, 'X': 7, 'Y': 7, 'Z': 7,
    // 小写字母
    'a': 7, 'b': 7, 'c': 6, 'd': 7, 'e': 7, 'f': 4, 'g': 7, 'h': 7, 'i': 3, 'j': 3,
    'k': 6, 'l': 3, 'm': 10, 'n': 7, 'o': 7, 'p': 7, 'q': 7, 'r': 4, 's': 6, 't': 4,
    'u': 7, 'v': 6, 'w': 9, 'x': 6, 'y': 6, 'z': 6,
    // 特殊字符
    '_': 6, '-': 4, '+': 7, '=': 7, '<': 6, '>': 6, '[': 4, ']': 4, '(': 4, ')': 4,
    '{': 4, '}': 4, '|': 3, '\\': 4, '/': 4, '?': 6, '!': 3, '@': 10, '#': 7, '$': 7,
    '%': 10, '^': 6, '&': 8, '*': 5, '~': 7, '`': 4, '"': 5, "'": 3, ':': 3, ';': 3,
    ',': 3, '.': 3, ' ': 4
  };
  
  // 计算文本宽度
  export function calculateTextWidth(text: string, isBold: boolean = false): number {
    let width = 0;
    for (let i = 0; i < text.length; i++) {
      const char = text[i];
      const charWidth = CHAR_WIDTHS[char] || CHAR_WIDTHS[' '] || 4;
      width += charWidth;
    }
    
    // 粗体字稍微宽一些
    if (isBold) {
      width = Math.round(width * 1.1);
    }
    
    return width;
  }